# -*- coding: utf-8 -*-#
#-------------------------------------------------------------------------------
# 建立者:        Young  
# Name:         demo7.10
# Description:
# Author:       $赵怡蕾
# Date:         2019/2/21
#-------------------------------------------------------------------------------

def add1(x,y,z):
    return x + y + z
# 运行结果：6
print(add1(1,2,3))

list = [2,3,4]        # 定义一个列表，也可以使用元组
# 将list中的2,3,4拆分，作为单独的参数值传入add1函数，运行结果：9
print(add1(*list))

dict = {'x':100,'y':200,'z':12}
# 将字典中的x，y和z拆分成名为x、y、z的3个形参值，然后传入函数，运行结果：312
print(add1(**dict))
# 用可变参数定义函数
def add2(*numbers):
    result = 0
    for number in numbers:
        result += number
    return result
print(add2(1,2,3,4,5))
# 使用星号同样可以拆分列表，并将单个元素作为参数传入add2的可变参数中
print(add2(*list))
# 定义add3函数时，numbers参数前使用两个星号，表示这个参数值接收字典类型数据
def add3(**numbers):
    result = 0
    for item in numbers.items():
        # 将numbers字典中的所有value相加
        result += item[1]
    return result
# 将字典dict中的元素作为单独的参数传入了add3函数
print(add3(**dict))
# 定义一个只拥有普通形参的add4函数
def add4(numbers):
    result = 0
    for item in numbers.items():
        result += item[1]
    return result
# 如果在定义函数时不加双星，那么在调用时也不需要加
print(add4(dict))
